﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

namespace V5_EaspLibs.Core {
    public class ConfigHelper {

        private static readonly ConfigHelper m_Instance = new ConfigHelper();
        /// <summary>
        /// 配置类
        /// </summary>
        public static ConfigHelper Instance {
            get { return m_Instance; }
        }
        /// <summary>
        /// 得到AppSettings中的配置字符串信息
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public string GetConfigString(string key) {
            string CacheKey = "AppSettings-" + key;
            object objModel = Easp.Cache.GetCache(CacheKey);
            if (objModel == null) {
                try {
                    objModel = ConfigurationManager.AppSettings[key];
                    if (objModel != null) {
                        Easp.Cache.SetCache(CacheKey, objModel, DateTime.Now.AddMinutes(180), TimeSpan.Zero);
                    }
                }
                catch { }
            }
            return objModel.ToString();
        }

        /// <summary>
        /// 得到AppSettings中的配置Bool信息
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public bool GetConfigBool(string key) {
            bool result = false;
            string cfgVal = GetConfigString(key);
            if (null != cfgVal && string.Empty != cfgVal) {
                try {
                    result = bool.Parse(cfgVal);
                }
                catch (FormatException) {
                    // Ignore format exceptions.
                }
            }
            return result;
        }
        /// <summary>
        /// 得到AppSettings中的配置Decimal信息
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public decimal GetConfigDecimal(string key) {
            decimal result = 0;
            string cfgVal = GetConfigString(key);
            if (null != cfgVal && string.Empty != cfgVal) {
                try {
                    result = decimal.Parse(cfgVal);
                }
                catch (FormatException) {
                    // Ignore format exceptions.
                }
            }

            return result;
        }
        /// <summary>
        /// 得到AppSettings中的配置int信息
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public int GetConfigInt(string key) {
            int result = 0;
            string cfgVal = GetConfigString(key);
            if (null != cfgVal && string.Empty != cfgVal) {
                try {
                    result = int.Parse(cfgVal);
                }
                catch (FormatException) {
                    // Ignore format exceptions.
                }
            }

            return result;
        }
    }
}
